package com.sac.common.controller;

import java.security.Principal;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Controller;

import com.sac.oa.domain.Message;
import com.sac.oa.domain.Response;

@Controller
public class WebSocketController {

	@Autowired
	private SimpMessagingTemplate messagingTemplate;

	@MessageMapping("/welcome")
	@SendTo("/topic/getResponse")
	public Response say(Message message) {
		System.out.println(message.getName());
		return new Response("welcome," + message.getName() + " !");
	}

	@MessageMapping("/chat")
	// 在springmvc 中可以直接获得principal,principal 中包含当前用户的信息
	public void handleChat(Principal principal, Message message) {
		// 通过convertAndSendToUser 向用户发送信息,
		// 第一个参数是接收消息的用户,第二个参数是浏览器订阅的地址,第三个参数是消息本身
		messagingTemplate.convertAndSendToUser("wisely", "/queue/notifications",
				principal.getName() + "-send:" + message.getName());
	}

	public void pushNotification(Message message) {
		// 通过convertAndSendToUser 向用户发送信息,
		// 第一个参数是接收消息的用户,第二个参数是浏览器订阅的地址,第三个参数是消息本身
		messagingTemplate.convertAndSendToUser("admin", "/queue/notifications",
				"server" + "-send:" + message.getName());
	}

}
